﻿using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Inmobiliaria.Presenters.ViewInterfaces;
using Inmobiliaria.Presenters.WFPresenters;
using Inmobiliaria.Exceptions;
using Inmobiliaria.Services.Core.DTO;
using System.Web.UI.HtmlControls;
using System.Windows.Forms;
using System.IO;
using System.Drawing;
using System;
using System.Collections.Generic;


public partial class RegistrarInmobiliariaWF : System.Web.UI.Page, IView, IViewRegistroInmobiliaria
{
    private RegistroInmobiliariaPresenter _presenter;
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            _presenter = new RegistroInmobiliariaPresenter(this);
            //IMensajeDeDialogoPregunta mensajeDeDialogo = (IMensajeDeDialogoPregunta)this.Master.FindControl("form1").FindControl("MensajeDeDialogoPregunta");
            //mensajeDeDialogo.Presenter = _presenter;
            if (!IsPostBack)
            {
                cmbProvincias.SelectedIndexChanged += new EventHandler(cmbProvincias_SelectedIndexChanged);
                _presenter.InitView(Request.QueryString);
                // Limpiar();
            }
        }
        catch (Exception ex)
        {
            ShowError(ex);
        }
    }
    protected void cmbProvincias_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            if (!String.IsNullOrEmpty(cmbProvincias.SelectedValue))
            {

                _presenter.CargarComboLocalidades();
                this.cmbLocalidad.Enabled = true;
            }
            else
            {
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #region Mensajes
    public void Error(string message)
    {
        MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Informacion, message);
    }
    public void ShowMessage(string message)
    {
        MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Informacion, message);
    }
    public void ShowError(Exception ex)
    {
        if (ex is CustomException)
        {
            MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Informacion, ex.Message);
        }
        else if (ex is ApplicationException)
        {
            MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Informacion, ex.Message);
        }
        else
        {
            MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Error, ex.Message);
        }
    }
    public void ShowQuestion(string message)
    {
        MostrarMensajeDialogoPregunta(Enumeraciones.TipoDeMensaje.Pregunta, message);
    }
    private void MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje tipoDeMensaje, string mensaje)
    {
        IMensajeDeDialogo mensajeDeDialogo = (IMensajeDeDialogo)this.Page.Master.FindControl("form1").FindControl("MensajeDeDialogo");
        System.Web.UI.Control mensajeR = this.Page.Master.FindControl("form1").FindControl("MensajeDeDialogo") as System.Web.UI.Control;
        if (mensajeR != null)
        {
            mensajeR.Visible = true;
        }
        mensajeDeDialogo.MostrarMensajeDialogo(tipoDeMensaje, mensaje);
    }
    private void MostrarMensajeDialogoPregunta(Enumeraciones.TipoDeMensaje tipoDeMensaje, string mensaje)
    {
        IMensajeDeDialogoPregunta mensajeDeDialogo = (IMensajeDeDialogoPregunta)this.Page.Master.FindControl("form1").FindControl("MensajeDeDialogoPregunta");
        System.Web.UI.Control mensajeR = this.Master.FindControl("form1").FindControl("MensajeDeDialogoPregunta") as System.Web.UI.Control;
        if (mensajeR != null)
        {
            mensajeR.Visible = true;
        }
        mensajeDeDialogo.MostrarMensajeDeDialogoPregunta(tipoDeMensaje, mensaje);

    }
    #endregion
    #region IViewPersonaWUC Members
    public string NombreInmobiliaria
    {
        get { return txtNombreInmobiliaria.Text; }
    }
    public int Provincia
    {
        get
        {
            int id = int.Parse(cmbProvincias.Text);
            return id;
        }
    }
    public List<DtoProvincias> Provincias
    {
        set
        {
            cmbProvincias.Items.Clear();
            cmbProvincias.Items.Add(new ListItem("Seleccione", ""));
            foreach (DtoProvincias item in value)
            {
                cmbProvincias.Items.Add(new ListItem(item.Nombre, item.Id.ToString()));
            }
        }
    }
    public int Localidad
    {
        get
        {
            int id = int.Parse(cmbLocalidad.Text);
            return id;
        }
    }
    public List<DtoLocalidades> Localidades
    {
        set
        {
            cmbLocalidad.Items.Clear();
            cmbLocalidad.Items.Add(new ListItem("Seleccione", ""));
            foreach (DtoLocalidades item in value)
            {
                cmbLocalidad.Items.Add(new ListItem(item.Nombre, item.Id.ToString()));
            }
        }
    }
    public string Calle
    {
        get { return txtCalle.Text; }
    }
    public string Altura
    {
        get { return txtAltura.Text; }
    }
    public string CodTelefono
    {
        get { return txtCodTelefono.Text; }
    }
    public string NumeroTelefono
    {
        get { return txtTelefono.Text; }
    }
    public string CodCelular
    {
        get { return txtCodCelular.Text; }
    }
    public string NumeroCelular
    {
        get { return txtCelular.Text; }
    }
    public string CodTelefono2
    {
        get { return txtCodTelefono2.Text; }
    }
    public string NumeroTelefono2
    {
        get { return txtTelefono2.Text; }
    }
    public string CodCelular2
    {
        get { return txtCodCelular2.Text; }
    }
    public string NumeroCelular2
    {
        get { return txtCelular2.Text; }
    }
    public string Email
    {
        get { return txtEmail.Text; }
    }
    public string Email2
    {
        get { return txtEmail2.Text; }
    }
    public string Facebook
    {
        get { return txtFacebook.Text; }
    }
    public string SitioWeb
    {
        get { return txtSitioWeb.Text; }
    }
    public static int idInmo;
    public int idInmobiliaria
    {
        set
        {
            idInmo = value;
        }
    }
    public byte[] FotoInmobiliaria
    {
        get
        {
            byte[] retorno = null;
            string savePath = string.Empty;
            string url = FileUpload1.PostedFile.FileName;
            if (url != "")
            {
                if (FileUpload1.HasFile)
                {
                    FileUpload1.SaveAs(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmobiliaria").ToString() + idInmo + "-" + txtNombreInmobiliaria.Text + ".jpg");
                }
                System.Drawing.Image img = System.Drawing.Image.FromFile(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmobiliaria").ToString() + idInmo + "-" + txtNombreInmobiliaria.Text + ".jpg");
                using (MemoryStream ms = new MemoryStream())
                {
                    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    retorno = ms.ToArray();
                }
                return retorno;
            }
            else
            {
                return retorno;
            }
        }
    }
    #endregion
    protected void btnRegistrar_Click(object sender, EventArgs e)
    {
        try
        {
            _presenter.GuardarInmobiliaria();
            Limpiar();
        }
        catch (Exception ex)
        {
            ShowError(ex);
        }
    }
    private void Limpiar()
    {
        txtNombreInmobiliaria.Enabled = false;
        cmbProvincias.Enabled = false;
        cmbLocalidad.Enabled = false;
        txtCalle.Enabled = false;
        txtAltura.Enabled = false;
        txtCodTelefono.Enabled = false;
        txtTelefono.Enabled = false;
        txtCodTelefono2.Enabled = false;
        txtTelefono2.Enabled = false;
        txtCodCelular.Enabled = false;
        txtCelular.Enabled = false;
        txtCodCelular2.Enabled = false;
        txtCelular2.Enabled = false;
        txtEmail.Enabled = false;
        txtEmail2.Enabled = false;
        txtFacebook.Enabled = false;
        txtSitioWeb.Enabled = false;
        FileUpload1.Enabled = false;
        btnVolver.Visible = true;
        btnRegistrar.Visible = false;
    }
    protected void btnVolver_Click(object sender, EventArgs e)
    {
        try
        {
            _presenter.Volver();
        }
        catch (Exception ex)
        {
            ShowError(ex);
        }
    }
}